package algoritmi;

/**
 * LRU - Least Recently Used algoritam
 * 
 * @author Maja Kabiljo
 * 
 */
public class LRU extends AlgoritamImpl {
	private int[] starost;

	public LRU() {
	}

	@Override
	protected void start(int[] koraci) {
		starost = new int[velicinaKesa];
		for (int i = 0; i < velicinaKesa; i++)
			starost[i] = 0;
	}

	@Override
	protected int[] getVrednosti() {
		return starost;
	}

	private void referenciraj(int pozicija) {
		for (int i = 0; i < velicinaKesa; i++)
			starost[i]--;
		starost[pozicija] = velicinaKesa - 1;
	}

	@Override
	protected void pogodak(int korak, int pozicijaUKesu) {
		referenciraj(pozicijaUKesu);
	}

	@Override
	protected int promasaj(int korak) {
		int pozicija = Utils.nadjiIndeksMinimuma(starost);
		referenciraj(pozicija);
		return pozicija;
	}
}
